package collection.test;

import javax.print.DocFlavor;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;

public class StudentList {
    public static void main(String[] args) {
        /*
         * Map集合的实现类
         * - HashMap：作为Map集合的主要实现类；线程不安全，效率高；存储null的key和value；
         * - LinkedHashMap：作为HashMap的子类；它是线程安全的，效率低；存储null的key和value；
         * - TreeMap：作为Map集合的子类；添加的key是按照key-value对进行排序的；
         * - Hashtable：作为Map集合的实现类；线程安全，效率低；不能存储null的key和value；
         * -Properties：常用来处理配置文件。key和value都是String类型

         */
        Map<Integer, String> stuList = new LinkedHashMap<>();


// - Object put(Object key,Object value)：将指定key-value添加到(或修改)当前map对象中
        stuList.put(18, "张三");
        stuList.put(19, "李四");
        stuList.put(20, "王五");
        stuList.put(19, "王");

//  - void putAll(Map m):将m中的所有key-value对存放到当前map中
        Map<Integer, String> stuList2 = new HashMap<>();
        stuList2.put(21, "赵六");
        stuList2.put(22, "钱七");
        stuList.putAll(stuList2);

//- 删除操作：
//  - Object remove(Object key)：移除指定key的key-value对，并返回value
        stuList.remove(20);
//  - void clear()：清空当前map中的所有数据
//        stuList.clear();
//- 元素查询的操作：
//  - Object get(Object key)：获取指定key对应的value
//        指定的key
        System.out.println(stuList.containsKey(19));
        System.out.println(stuList.get(19));
//  - boolean containsKey(Object key)：是否包含
//  - boolean containsValue(Object value)：是否包含指定的value
        System.out.println(stuList.containsValue("王五"));
//  - int size()：返回map中key-value对的个数
        System.out.println(stuList.size());
//  - boolean isEmpty()：判断当前map是否为空
        System.out.println(stuList.isEmpty());
//  - boolean equals(Object obj)：判断当前map和参数对象obj是否相等
//- 元视图操作的方法：
//  - Set keySet()：返回所有key构成的Set集合
        System.out.println(stuList.keySet());
//  - Collection values()：返回所有value构成的Collection集合
        System.out.println(stuList.values());
//  - Set entrySet()：返回所有key-value对构成的Set集合
        System.out.println(stuList.entrySet());

        System.out.println(stuList);
        stuList.put(null, null);
        System.out.println(stuList.get(null));
//        String s = stuList.get(null);
//        byte[] bytes = s.getBytes();




//        String s1 = null;
//        byte[] bytes1 = s1.getBytes();
    }

}
